qiqi.eo.dialog
eo.dialog
模块允许你以对话框的形式打开一个新的表单。
新增
create(options): Promise<DialogApi>
options
对象属性如下:
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
entityName | 对象名称 | string | - |
passParams | 透传参数,在新打开的表单中,可以通过 PageContext.getPassParams() 获取 | Record<string, any> | - |
title | 标题 | string | - |
cancelText | 取消按钮的文字 | string | 取消 |
confirmText | 保存按钮的文字 | string | 保存 |
DialogApi
方法 | 说明 |
---|---|
close(closeOptions?: IDialogCloseOptions): void | 关闭 |
关闭对话框参数 IDialogCloseOptions 属性如下:
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
force | 强制关闭,不会提示用户数据是否发生变更的提示,直接关闭对话框 | boolean | false |
示例
需求清单:
- 打开新增人员对话框
- 设置人员名称默认值为 "企企"
- 拦截人员的数据保存,并将相关数据返回给调用表单,并关闭人员对话框(人员不进行服务端保存)
我们在目标单据上需要定义一下脚本内容:
// 前置逻辑忽略,重点关注对话框部分的逻辑
// 打开一个人员的新增对话框
const dialogApi = await qiqi.eo.dialog.create({
// 通过 entityName 指定表单的业务对象是人员(User)
entityName: 'User',
passParams: {
// 通过透传参数,传递名称默认值,在人员的脚本中,需要接收这个值,并进行赋值
username: '企企',
// 通过透传参数,传递保存的回调函数,在人员的脚本中,需要对保存进行拦截,并调用该函数返回人员的值
onSaved: (userValue) => {
console.log('userValue', userValue);
// 当接收到人员表单的保存回调时,关闭对话框,并通过 force = true 来强制关闭对话框
dialogApi.close({
force: true
});
}
}
})
同时,我们需要在智元平台中,给 "人员" 增加脚本内容:
thisApp.formOnLoad = async (ctx) => {
// 通过 PageContext 获取到透传参数
const passParams = ctx.getPageContext().getPassParams();
if(passParams) {
// 从 passParams 中获取到传递的名称初始值和回调函数
const { username } = passParams;
// 使用 username 给表单的 name 字段赋值
ctx.getFormContext().form.getField('name').value = username;
}
}
// 监听人员表单保存的时间
thisApp.beforeSave = ctx => {
// 通过 PageContext 获取到透传参数
const passParams = ctx.getPageContext().getPassParams();
if(passParams) {
// 调用前置表单传递的 onSaved,并通过 cancel 取消本次保存
passParams.onSaved?.(ctx.getCurrentContext().value);
ctx.getCurrentContext().cancel();
}
}